package AppCommon

import (
	"fmt"
	"translate_backend/AppConfig"
	"translate_backend/db"
	"translate_backend/models"
)

var (
	//HostURL 主机域名
	HostURL string
)

func init() {

	HostURL = AppConfig.Conf.Host + ":" + AppConfig.Conf.Httpport

}

func SetUp() {

	//如果是生产环境,不用端口
	// if AppConfig.Conf.Env == "prod" {
	// 	HostURL = AppConfig.Conf.Host
	// }else {
	// 	if AppConfig.Conf.Httpport == ""{
	// 		HostURL = AppConfig.Conf.Host
	// 	} else {
	// 		HostURL = AppConfig.Conf.Host + ":" + AppConfig.Conf.Httpport
	// 	}
	// }

	if AppConfig.Conf.Httpport == "" {
		HostURL = AppConfig.Conf.Host
	} else {
		HostURL = AppConfig.Conf.Host + ":" + AppConfig.Conf.Httpport
	}

}

// 初始化数据
func InitDataCheck() {

	//========数据库数据初始化========
	var momgoSession = db.GetMgo()
	if momgoSession != nil {

		//建立超级管理员
		insertSuperAdmin()

		//--创建测试数据---
		insertTestProject()
	}

}

// 插入超级管理员信息
func insertSuperAdmin() {
	var res []interface{}
	q := map[string]interface{}{"isSupperAdmin": 1}
	db.FindAll("user", q, map[string]int{"_id": 0}, nil, &res, 0, false)
	//fmt.Println("关于信息:",len(res),count)

	if len(res) == 0 {
		user := models.User{
			ID:        "",
			Nickname:  "Admin",
			Username:  "Admin",
			Authority: "all",
			Avatar:    ""}

		user.SetupInitValues()
		user.IsSupperAdmin = 1               //超级管理员标记,理论上只允许有一位
		user.SetupPassword("Admin!@#qweasd") // 预设密码
		//fmt.Println("密码:", user.Password)

		res := db.InsertOne(user, "user")
		if res {
			fmt.Println("首次初始化管理员")
		} else {
			fmt.Println("初始化管理员失败")
		}

		//建立唯一索引
		var momgoSession = db.GetMgo()
		var dbname = db.DBName
		db.EnsureUniqueIndex(momgoSession, dbname, "user", "username")

	}
}

// 插入项目
func insertTestProject() {
	var res []interface{}
	db.FindAll("project", nil, map[string]int{"_id": 0}, nil, &res, 0, false)
	//fmt.Println("关于信息:",len(res),count)

	//当数据库没有数据时插入一条测试数据
	if len(res) == 0 {
		proj := models.Project{
			Name: "极简汇率",
			Des:  "极简汇率app"}

		proj.SetupInitValues()
		var pid = "5c5aa86d2cfbd48d997c6e53"
		proj.ID = pid
		//fmt.Println("密码:", user.Password)

		res := db.InsertOne(proj, "project")
		if res {
			fmt.Println("插入测试项目成功")
		} else {
			fmt.Println("初始化管理员失败")
		}

		//建立唯一索引
		var momgoSession = db.GetMgo()
		var dbname = db.DBName
		db.EnsureUniqueIndex(momgoSession, dbname, "project", "id")

		//创建对应表5c5aa86d2cfbd48d997c6e53 对应 project表里的测试数据 "极简汇率"
		db.EnsureUniqueIndex(momgoSession, dbname, pid, "langkey")
	}
}
